package org.yoki.edu.common.protocol.portal.v2.parser;

import org.yoki.edu.common.protocol.portal.exception.enums.PortalErrorStatusEnum;
import org.yoki.edu.common.protocol.portal.exception.PortalException;
import org.yoki.edu.common.protocol.portal.msg.PortalV1Msg;

/**
 * @author Sky$
 * @Description: TODO
 * @date 2017/10/29$ 15:59$
 */
//TODO 现与V1解析一致，未完成对MD5的校验
public class PortalV2MsgParser {

    private final int ACK_CHALLENGE = 0X02;
    private final int ACK_AUTH = 0X04;
    private final int ACK_LOGOUT = 0X06;

    private final int ERROR_CODE_1 = 1;
    private final int ERROR_CODE_2 = 2;
    private final int ERROR_CODE_3 = 3;
    private final int ERROR_CODE_4 = 4;

    public PortalV1Msg parse(byte[] input) throws PortalException {
        PortalV1Msg msg = new PortalV1Msg();
        msg.parse(input);
        parse(msg);
        return msg;
    }

    public void parse(PortalV1Msg msg) throws PortalException {
        Integer type = msg.getType();
        Integer errorCode = msg.getErrCode();
        PortalErrorStatusEnum[] enums = PortalErrorStatusEnum.values() ;
        for(PortalErrorStatusEnum e : enums){
            if(e.getErrCode() == errorCode && e.getType() == type){
                throw new PortalException(e);
            }
        }
    }

}
